perm filename BOOK.DIR[BOO,JMC]2 blob sn#520693 filedate 1980-07-05 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00016 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00003 00002	LSPCLT.DIR[LSP,CLT] is an annotated directory of files on [LSP,CLT].
C00004 00003	22-Aug-78  1353(partial up date)
C00012 00004	PUBBING conventions
C00014 00005	To pub individual chapters: 
C00015 00006	Plan of action w78
C00017 00007	General improvements for text
C00019 00008	Random ideas
C00020 00009	Work to do (file handling, form, ...):
C00021 00010	Work to do (examples programs ...)
C00022 00011	Work to do ( theoretical):
C00023 00012	Proposed (revised) organization of Book
C00026 00013	Ideas for contents of additional chapters:
C00029 00014	Notes and comments.
C00030 00015	Interesting data structures.
C00031 00016	Project and program ideas
C00035 ENDMK
C⊗;
;LSPCLT.DIR[LSP,CLT] is an annotated directory of files on [LSP,CLT].
If it has disappeared or is out of date type DO MKDIR.DO[LSP,CLT] to the monitor
    and an new directory will be made.
(Directory of old versions of book are in 206LSP.ARC[206,LSP])
22-Aug-78  1353(partial up date)

Filnam Ext   PPN    Size  Written  Time Pro    Writer     Reference      Dumped      Off

BOOK   XGP 206LSP  138.3 25-Sep-78 0613 000 LISHAR PUB2   05-Dec-78 22-Oct-78 P1246>
	F78 version of BOOK, now deleted.

BOOK       LSPCLT    3.2 22-Aug-78 1656 005   1CLT E      
	Documentation and ideas file

****Pubmacro files

BKMAC  PUB LSPCLT    2.0 22-Mar-78 0122 000   1CLT E      22-May-78 04-Apr-78 P1101>
LSPMAC PUB LSPCLT    1.8 26-Apr-78 0956 005   1CLT E      15-Jun-78 09-May-78 P1126>

LSPEXP PUB LSPCLT    3.0 20-Mar-78 2302 005   1CLT E      20-Mar-78 04-Apr-78 P1101>
	Pub test file

****Assembly files

LSPDOC PUB LSPCLT    640 21-Mar-78 0453 005   1CLT E      31-May-78 04-Apr-78 P1101>
	Onesided
LSPDC1 PUB LSPCLT    512 21-Mar-78 0451 000   1CLT E      31-Mar-78 04-Apr-78 P1101>
	Twosided

****Batching (see p4)

MKCHAP DO  LSPCLT    256 26-Jul-78 0009 000   1CLT E      26-Jul-78

   do mkchap (answer time+2min to T=	and <chapter name> to C=	)
	this will do the relevant pub job in batch mode 
	and write the xgp file on [BOO,JMC]

****Text

PREFAC[BOO,JMC]   1.1 25-Jul-78 2312 000   1CLT E      31-Jul-78 09-Aug-78 P1185>
    Introduction

READIN[BOO,JMC]  15.6 22-Aug-78 0344 000   1CLT E      22-Aug-78
	Introduction to LISP:  S-expressions, LISP program constructs, 
	how to write recursive function definitions,EVAL


WRITIN[BOO,JMC]  10.1 11-Aug-78 0445 005   1CLT E      12-Aug-78 20-Aug-78 P1194
    Forms of recursion and examples, thinking (reasoning) about recursive programs,
	induction,  informal proofs.

PROVIN[BOO,JMC]  20.1 12-Aug-78 1906 000   1CLT E      12-Aug-78 20-Aug-78 P1194
	Proving Properties of LISP programs: 
	First order theory of LISP and example proofs

PROVEX[BOO,JMC] 
	Proving Properties of LISP programs: 
	First order theory of LISP and example proofs

IMPURE[BOO,JMC]   7.6 08-Aug-78 2009 000   1CLT E      08-Aug-78 20-Aug-78 P1194>
	Impure and Unclean LISP:
	PROGs and Arrays, RPLACs, Property lists, Atom and pname manipulation

MACHIN[BOO,JMC]
	How LISP works: Oblists,gc,i/o,errors,tracing,debugging,editing

SEARCH[BOO,JMC]   9.3 31-Jul-78 1351 005   1CLT E      08-Aug-78 13-Aug-78 P1190>
    Tree searching (depth first: puzz,  breadth first: graph min dist or csg)
    Game tree searching: αβ  TIC TAC TOE

EXTEND[BOO,JMC]   4.6 08-Aug-78 2013 000   1CLT E      08-Aug-78 20-Aug-78 P1194>
	Transforming LISP programs.
	Purifying progs, derived programs, (a little metatheory?).
    
ABSNTX[BOO,JMC]   7.5 08-Aug-78 2015 000   1CLT E      08-Aug-78 20-Aug-78 P1194>
    Description of abstract syntax: synthetic,analytic,relations,induction
	(extract abstract syntax of S-expressions from LISP axioms as example.)
	defining semantics of programs,	proving compiler correctness(MCPAIN)

COMPIL[BOO,JMC]   8.0 31-Jul-78 1216 005   1CLT E      19-Aug-78 13-Aug-78 P1190>
	Compling (LISP programs) in LISP :   LAP,LCOM0,LCOM4

COMPUT[BOO,JMC]   2.3 08-Aug-78 2016 005   1CLT E      08-Aug-78 20-Aug-78 P1194>
	Computability and Noncomputability  


LSPBIB[BOO,JMC]   1.0 22-Mar-78 0303 005   1CLT E      22-Mar-78 04-Apr-78 P1101>
	Bibliography, partially annotated


****Appendices

FOLAPX[BOO,JMC]   9.2 22-Mar-78 0304 005   1CLT E      31-Mar-78 04-Apr-78 P1101>
    Appendix containing FOL proofs

LCOMAP[BOO,JMC]   2.8 20-Mar-78 0250 005   1CLT E      22-Mar-78 04-Apr-78 P1101>
    Appendix containing internal forms of LCOM0 and LCOM4

****Pub files: pub commands for pubbing individual chapters.

PREFAC PUB LSPCLT    256 25-Jul-78 2312 000   1CLT E      31-Jul-78 09-Aug-78 P1185>

READIN PUB LSPCLT    512 12-Aug-78 1700 000   1CLT E      12-Aug-78 20-Aug-78 P1194
WRITIN PUB LSPCLT    768 12-Aug-78 1832 000   1CLT E      12-Aug-78 20-Aug-78 P1194
PROVIN PUB LSPCLT    512 12-Aug-78 1839 000   1CLT E      12-Aug-78 20-Aug-78 P1194
PROVEX PUB LSPCLT    
IMPURE PUB LSPCLT    256 08-Aug-78 2010 000   1CLT E      08-Aug-78 20-Aug-78 P1194>
MACHIN PUB LSPCLT
SEARCH PUB LSPCLT    256 08-Aug-78 2012 000   1CLT E      08-Aug-78 20-Aug-78 P1194>
EXTEND PUB LSPCLT    384 08-Aug-78 2013 000   1CLT E      08-Aug-78 20-Aug-78 P1194>
ABSNTX PUB LSPCLT    256 08-Aug-78 2014 000   1CLT E      08-Aug-78 20-Aug-78 P1194>
COMPIL PUB LSPCLT    256 08-Aug-78 2011 000   1CLT E      08-Aug-78 20-Aug-78 P1194>
COMPUT PUB LSPCLT    256 08-Aug-78 2017 000   1CLT E      08-Aug-78 20-Aug-78 P1194>

LSPBIB PUB LSPCLT    256 26-Jul-78 0008 000   1CLT E      31-Jul-78 09-Aug-78 P1185>

	PUB <chapter name> pubs the appropriate chapter; alias to lsp,clt first


****Micsellaneous

EXCISE     LSPCLT    4.8 01-Aug-78 2031 000   1CLT E      01-Aug-78 13-Aug-78 P1190>
	Hunks of text that have been excised but are worth keeping for later use.

	Total= 106.5


PUBBING conventions


BKMAC.PUB[BOO,JMC] and LSPMAC.PUB[BOO,JMC] have been modified as follows:
the fonts 8,A,B have been combined into one file denoted by 8 and 
attached to symb30.fnt[fnt,clt].  The symbols in this file are sized to
be compatible with grk30 (ht 32, ht above base line 27) and are as follows
fhtwxyzFPSY (from GRK30 as is)
@←c[ms25] circle-c
≤←b[math30] Scott po symbol
|←T[math30] Scott bottom symbol (qb or qw response)
*←*[math30] centered dot used for times  (q* response)
#←x[math30] raised "x" used for cross-product
&←I[math30] integral sign
∞←A[ms30] section sign   (qsect response)
π←π[math30] ¬ε symbol
:←:[zero30] umlaut
/← [brce35] upper corner trimmed to 32
{← [brce35] left brace trimmed to 32
\← [brce35] lower corner trimmed to 32
macros using the 8 or A fonts have been updated.

Figure response now always centers, takes a caption, end by "!"
Table response like figure.

sections and subsections have labels
To pub individual chapters: 

al lsp,clt
pub <chapter name>
; <chapter name> ε {PREFAC READIN WRITIN PROVIN IMPURE SEARCH
;		    EXTEND ABSNTX COMPIL COMPUT LSPBIB}


;or

do mkchap[BOO,JMC]
T=	<current time+2min or so>
C=	<chapter name>

;will create a batch job to do the above


;To pub book use LSPDOC.PUB (for 1 sided) or LSPDC1.PUB (for 2 sided)
;NB:  no guarantees as to uptodateness of these files
Plan of action w78

⊗(1)	Finish chapter I. Settle on form, notation conventions, etc.
⊗(2)	Update chapter II to conform to these conventions.
⊗(3)	Insert McPain into the Abstract Syntax chapter.
⊗(4)	Work out Impure Chapter
?(5)	Rewrite chapter III
(6)     Add chapter on Program transformations.
⊗(7)    Move eval into Chapter I
⊗(8)     Add normaliztion of conditionals as exercise to ABSNTX

hopefully all of this can be done before notes are pubbed for s78 class

Plan of action e78

⊗(1) Take care of bugs and improvements noted in S78 notes.

⊗(2) CH I: improvements as noted on content page.

⊗(3) CH II

⊗(4) CH III

⊗(5) CH IV  new title: Additional sections as noted on content page

⊗(6) Search chapter:  improvements as note on content page

⊗(7) Figure titles

(8) Index on definitions and important concepts



General improvements for text

Exercises:  Each chapter should have 
	simple and straight forward exercises at the end of most sections
	At the end of each chapter have a section of substantial exercises
	    relevant to the material in the chapter.
	Need to collect many more of each kind and improve those given

formulas or formulae??

Index on definitions (of programs)

Index of important concepts

Summary of axioms and theroems

Notation and symbols summary  formal conection between programs and terms.

switch names on definitions of reverse makin the efficient one reverse1

switch to symbolic labels for function defintions axioms, theorems etc.

Complete change of lisp term notation =→qequal, ∧ qand etc.

do we need subsubsections? probably in PROVIN any way.

Random ideas

Efficiency of programs:
	total number of conses vs amount of space needed at any one time.
	efficient version of subst

Simplification

Production rule programming

Transformations

Data directed version of LCOM
Production rule version of LCOM
More passes
Work to do (file handling, form, ...):

Finnish Pruning 206 files
    Document naming conventions etc.
    Get any relevant files from 206,CCG 
    Send notes to jmc ccg about documentation etc.

Fix function library
	Translate any interesting rlisp programs
	Document programs
	Get any inteesting function definitions from 206,ccg

Make maclisp file of all functions defined in book.

CCG has catalogue of lisp exercises according concepts required, done by avra cohn
	in his office (ici).  Take a look at this soon.


Work to do (examples programs ...)

Valmax/min Linemax/min Treemax/min  ??proof and cutoff

Clean

Mini scheme

implement LIT

Spruce up and document BB 
    (use for example of data driven computation, top level control, i/o )
     Include pp for lisp terms as S-exp?
     general method of specifying doc processor decorations

Modify LCOM4 to produce iterative code when possible
Modify LCOM4 to compile mapping functions


Work to do ( theoretical):

work out description of Ordinals, cantor normal form, ... 
	exercise: repn as sexp, order predicate, equality (of ord represented),
		  test for 0, succ, lim ord
	prove some properties of repn and functions
	natural arith
	ordinal arith

Program specification

Proving facts about functionals
    mapping functions for example
    proving things about the function defined by a SCHEME LABELS construct
    proving things about the function defined by a MACLISP LABELS construct

Proposed (revised) organization of Book

The idea is to divide the book in two parts (conceptually if not actually).
Part 1 covers the basic topics which would be the core of the course material.
Part 2 is a collection of special topics, more advanced material, examples
of programs and additional theoretical techniques....
For text book purposes material from part 2 could be selected according 
to taste and interest of teacher and students.

Part 1:

   I	Reading  LISP programs (function definitions)

  II	Writing  LISP programs

 III 	Proving statements about LISP programs

  IV 	Non trivial proof examples 

   V	Dynamic LISP --- prog, rplacs, etc. 

   Va	Extended methods of representation and proof: elephant, EXTEND

  VI	LISP implementation (how it really works)


Part 2:

SEARCH	Searching programs

EXTEND	Transforming LISP programs: move derived program feature to Va?

ABSNTX	Abstract Syntax omit?

COMPIL  The LCOM compilers theme and variations.

COMPUT	Computatibility/Non-computability

       	Control Structures

      	Pattern matching, syntax directed computation, data driven computation

	Dialects of LISP, systems written in LISP

	Collection of substantial programming and/or proving projects

Remarks:  Chapters with names exist is some form those with out names do not.

For more details on contents of chapters see LSPCMT[BOO,JMC]/11p and /12p.
Ideas for contents of additional chapters:

CHAPTER ITERATION VS RECURSION? or more generally CONTROL STRUCTURES 
references
Art of the interpreter, scheme, lambda
Friedman and Wise
lazy evaluator
Pratt
Michael Gordon, lit
Allen

Add section on iteration vs recursion.
    ex program that puts a program into iterative form where ever possible.?
Tail recursion
dynamic vs lexical binding (*function of maclisp)
dynamic and static binding - Sussman and Steele
cbv vs cbn
eval, neval, needeval, reval

continuations
Use of "continuations" for dynamic search
    --returns next item plus continuation describing how to restart the 
      search where it left off.

Backtracking  (would this be better in the section on control structures?)


CHAPTER PATTERN MATCHING, SYNTAX DIRECTED COMPUTATION

Syntax directed computation. 
	see SYNTAX.PUB[206,JMC]
    Compare to sd compiling  
    SDIO
XFORM functions, commutative and associative pattern matching.
production rules/control structure
theory? (semantics proof of correctness) not much known?
micro-PLANNER
Data driven programming: BB, Diffie compiler,
    Dispatch tables?

CHAPTER DIALECTS OF LISP, LISP SYSTEMS
?how relate to CONTROL STRUCTURES AND PM,SDC..?
LISP machine

CHAPTER APPLICATIONS?
macsyma and reduce


5. Applications to proof-checking and theorem proving.  This should
be the major application chapter.

CHAPTER METAPROGRAMS?

1. Programs that look at or produce programs.
e.g. is it iterative, compile maplists into functions,

APPENDIX: projects

Notes and comments.

See  LISP.NOT[E76,JMC]
     LISP.NOT[F77,JMC]
     LISP.2  [F77,JMC]


Interesting data structures.

Boolean expressions
Wffs, terms
proofs / derivations
grammars
machines
λ-expresions
LISP programs
Linear spaces and transformations
Ematch simpset (FOL)
Project and program ideas

Appendix containing substantial mathematical problem programmed in LISP.
	Card schuffling example  a shuffle is represented in the group
	algebra of S52 by sum prob(i)*perm(i).  Repeated schuffle rep by
	product.  How many schuffles required to make all perm equally
	probable?  Determined by eigenvalue of largest matrix in direct
	sum decomp of algebra.  Need to do more mathematics before this
	problem is finnishable on the computer.

Include some examples where the simplest Lisp programs are very bad:
	such as fib(n) = fib(n-1)+fib(n-2), or computing partitions of n
	via recusrive formula involving q(m,n) = those involving no more 
	than m numbers.  Consider solution using a table and keeping
	around only those values still needed in the table.

Boolean simplifier
tautology checker (Wang algorithm and truth table)
substitute into expressions with quantifiers
find the free variables
λ-conversion
unify
find and x st. (at various levels. this is the paradigm of a problem solver)
proof checker
proof strategy trier (interpreter)
problem solving strategy interpreter
PROGITER
make a function iterative
canonical forms of boolean and conditional expressions
simplify algebraic and lisp expressions
student helper:  program that analyses fndefinitions and point out possible
    errors (i) spelling errors, (ii) missing termination clause, (iii)
recursion not in a conditional, (iv) inconsistent operations on data
(eg adding to and cdring same data) (v) calls to undefined functions

Write search/successors in dynamic fashion so that a new position is
     position is generated only when required.  successors will need
     to remember where it is.  They could cooperate like co-routines.
     Compare the two programs for a variety of problems
     Extend technique to be used in the αβ search
     Generalize class of problems to which this sort of transformation
        is applicable.


Consider the problem of adding and deleting in a data structure in log k
time for the kth item.  How to do this in LISP, how to formalize proof in FOL.